﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once

#include "GcmpGeometryInterface.h"
#include "Vector3d.h"
namespace gcmp
{
    /*!
    *@enum MeshMeshIntEpsilonType
    *@brief 网格求交的容差给定方式
    */
    enum class MeshMeshIntEpsilonType :int32_t
    {
        Default = 0,        ///< 默认方式,根据网格的规模和点数目，自动计算容差,传入容差无效    
        Common = 1,         ///< 一般方式，在用户传入容差和自动计算的容差之间取最大值         
        User = 2            ///< 强制使用用户给定容差
    };

    /*!
    * @enum  ReConstructMeshType
    * @brief 重构求交网格的方式
    */
    enum class ReConstructMeshType :int32_t
    {
        No = 0,         ///<不重构求交网格
        First = 1,      ///<重构第一个求交网格
        Second = 2,     ///<重构第二个求交网格
        All = 3         ///<重构求交的两个网格
    };

    /// \brief Mesh和Mesh相交线段
    ///
    struct MeshMeshIntSegment
    {
        /// \brief  相交线段的起点
        ///
        Vector3d StartPoint;
        /// \brief  相交线段的终点
        /// 
        Vector3d EndPoint;
    };
}
